package com.ruoyi.resume.task;

import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

@Component
public class TaskQueue {

    // 使用 Set 来存储任务，确保任务不会重复
    private final Set<Task> taskSet = Collections.synchronizedSet(new HashSet<>());

    // 添加任务到队列（去重）
    public boolean addTask(Task task) {
        synchronized (taskSet) {
            return taskSet.add(task); // 如果任务已存在，则返回 false
        }
    }

    // 获取并移除一个任务（FIFO逻辑）
    public Task takeTask() {
        synchronized (taskSet) {
            Iterator<Task> iterator = taskSet.iterator();
            if (iterator.hasNext()) {
                Task task = iterator.next();
                iterator.remove();
                return task;
            }
        }
        return null; // 队列为空
    }

    // 检查队列是否为空
    public boolean isEmpty() {
        return taskSet.isEmpty();
    }

    // 获取当前队列中的任务数量
    public int size() {
        return taskSet.size();
    }
}
